#ifndef FACADE_H
#define FACADE_H
#include <iostream>
#include <string>
#include "javabean.h"

using namespace std;

class SystemA{
public:
    void doThing(){
        cout<<"System A do..."<<endl;
    }
};

class SystemB{
public:
    void doThing(){
        cout<<"System B do..."<<endl;
    }
};

class SystemC{
public:
    void doThing(){
        cout<<"System C do..."<<endl;
    }
};

class Facade{
    PointerPropertyBuilderByName(SystemA,a,private)
    PointerPropertyBuilderByName(SystemB,b,private)
    PointerPropertyBuilderByName(SystemC,c,private)
public:
    Facade(){
        m_a=new SystemA;
        m_b=new SystemB;
        m_c=new SystemC;
    }
    ~Facade(){
        delete  m_a;
        delete  m_b;
        delete  m_c;
    }
    void doThing(){
        m_a->doThing();
        m_b->doThing();
        m_c->doThing();
    }
};

#endif // FACADE_H
